# -*- coding: utf-8 -*-
'''
Created on 2018年5月9日
@author: liaolzl
请百度搜索并安装文本编辑器notepad++。
并且写一个Python程序，实现：
用命令行启动 notepad++ 编辑器打开当前的代码文件。
过10秒后用Windows下的命令 tasklist 找到该notepad++进程，并获取其进程ID
根据 其进程ID 使用命令 taskkill 杀死notepad++进程。'''
#解答：
import os,time,sys
from subprocess import Popen,PIPE
#notepad++的路径
notepadpath = r'D:\\Notepad++\\notepad++.exe'
#该文件的路径
pypath = r'E:\contractors-pythonpractise-master\pythonpractise\pypractice\lesson13.py'
#调用notepad++打开当前代码文件
cmd = f'{notepadpath} {pypath}'
p = Popen(args=cmd,shell=True)
print("Notepad++ open!")
time.sleep(10)
# 返回的是 Popen 实例对象
p = Popen(
    'tasklist',
    stdin  = None,
    stdout = PIPE,
    stderr = None,
    shell=True)
# communicate 方法返回 输出信息
outinfo, errinfo = p.communicate()
# 注意返回的内容是bytes 不是 str ，
# 我的是中文windows，所以用gbk解码
outinfo = outinfo.decode('gbk')
#print(outinfo)
# 在输出中，寻找 notepad++ 的 进程ID
pid = None
proclist = outinfo.splitlines()
for pinfo in proclist:
    if 'notepad++.exe '  in pinfo:
        print(pinfo)

        infolist = pinfo.split(' ')
        
        # 去掉其中的空信息
        infolist = [info for info in infolist if info]
        
        # 进程ID是第2个元素
        pid = infolist[1]
        print(f'notepad++的进程ID是{pid}')
        break

if pid is None:
    print('对不起，没有发现notepad++的进程ID')
    sys.exit(2)

# 杀掉进程
os.system(f'taskkill /PID {pid} /F')